
<?php

Class User_model extends CI_Model {

    function __construct() {
        $this->load->database();
    }

    /**
     * metodo que verifica el usuario para logearlo
     * @param $usr_nickname
     * @param $usr_password
     * @return boolean
     */
    function login($usr_nickname, $usr_password) {
        $this->db->select('usr_id, usr_nickname, usr_password, usr_email');
        $this->db->from('cl_usuario');
        $this->db->where("(usr_nickname='" . $usr_nickname . "' or usr_email='" . $usr_nickname . "')");
        $this->db->where('usr_password', MD5($usr_password));
        $this->db->where('usr_verificado', 1);
        $this->db->limit(1);

        $query = $this->db->get();

        if ($query->num_rows() == 1) {
            return $query->result();
        } else {
            return false;
        }
    }

    /**
     * Esta función guarda en la base de datos a un nuevo usuario, sus datos se ingresan como parametro
     * @param type $usr_nickname
     * @param type $usr_password
     * @param type $usr_email
     * @param type $usr_activationCode
     * @return type 
     */
    function registerUser($usr_nickname, $usr_password, $usr_email, $usr_activationCode) {
        $data = array('usr_nickname' => $usr_nickname, 'usr_password' => MD5($usr_password), 'usr_email' => $usr_email, 'usr_activacion' => $usr_activationCode);
        $this->db->insert('cl_usuario', $data);

        return $usr_nickname;
    }

    /**
     * Esta funcion edita el email del usuario ingresado como parametro
     * @param type $usr_id
     * @param type $usr_email
     * @return type 
     */
    function editEmail($usr_id, $usr_email) {

        $data = array('usr_email' => $usr_email);
        $this->db->where('usr_id', $usr_id);
        $this->db->update('cl_usuario', $data);

        return $usr_email;
    }

    /**
     * Esta función retorna el identificador del usuario ingresado como parametro
     * @param type $usr_nickname
     * @return type 
     */
    function getId($usr_nickname) {

        $this->db->select('usr_id');
        $this->db->from('cl_usuario');
        $this->db->where('usr_nickname', $usr_nickname);
        $query = $this->db->get();
        foreach ($query->result() as $row) {
            return $row->usr_id;
        }
    }

    function getPerfil($usr_activacion) {
        $this->db->select('usr_id, usr_email, usr_nickname');
        $this->db->from('cl_usuario');
        $this->db->where('usr_activacion', $usr_activacion);
        $query = $this->db->get();
        foreach ($query->result() as $row) {
            $datos = array(
                'usr_id' => $row->usr_id,
                'usr_email' => $row->usr_email,
                'usr_nickname' => $row->usr_nickname
            );
        }
        return $datos;
    }

    /**
     * Esta función verifica si el usuario existe en la base de datos, retorna verdadero/falso
     * @param type $usr_nickname
     * @return boolean 
     */
    function verifyNickname($usr_nickname) {

        $this->db->select('usr_nickname');
        $this->db->from('cl_usuario');
        $this->db->where('usr_nickname', $usr_nickname);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Esta función verifica si el email existe en la base de datos, retorna veradero/falso
     * @param type $usr_email
     * @return boolean 
     */
    function verifyEmail($usr_email) {
        $this->db->select('usr_email');
        $this->db->from('cl_usuario');
        $this->db->where('usr_email', $usr_email);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Esta función activa la cuenta que corresponde al codigo de activación
     * @param type $code 
     */
    function activateAccount($code) {
        $datos = array(
            'usr_verificado' => 1
        );
        $this->db->where('usr_activacion', $code);
        $this->db->update('cl_usuario', $datos);
    }

    /**
     * Esta función verifica si el codigo ingresado está en la base dedatos, retorna verdadero/falso
     * @param type $code
     * @return boolean 
     */
    function verifyCode($code) {

        $this->db->select('usr_activacion');
        $this->db->from('cl_usuario');
        $this->db->where('usr_activacion', $code);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * metodo para cambiar clave de usuario
     *  @param $usr_id,$usr_password
     *  @return boolean 
     */
    function editPassword($id, $password, $newpassword) {

        $data = array('usr_password' => MD5($newpassword));
        $this->db->where('usr_id', $id);
        //$this->db->where('Password', MD5($password));
        $query = $this->db->update('cl_usuario', $data);
    }

    /**
     * verifica el password si es correcto dependiendo de la persona
     * @param type $usr_id, $usr_password
     * @return boolean
     */
    function verifyPassword($usr_id, $usr_password) {

        $this->db->select('usr_id');
        $this->db->from('cl_usuario');
        $this->db->where('usr_id', $usr_id);
        $this->db->where('usr_password', MD5($usr_password));
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            return true;
        } else {
            return false;
        }
    }

}

?>
